package com.lyrcsoft.rxjava1x.operators.convert;

import lombok.extern.slf4j.Slf4j;
import rx.Observable;
import rx.functions.Action1;
import rx.functions.Func1;

import java.util.ArrayList;
import java.util.List;

/**
 * rxjava map 变换
 * 将类型转化成另一个类型
 *
 * @author fujc2dev@126.com
 * @date 2024-11-19
 */
@Slf4j
public class Rx1map {
    public static void main(String[] args) {
        log.debug("----------- Map ---------");
        Observable.just(1, 2, 3, 4, 5)
                .map(new Func1<Integer, String>() {
                    @Override
                    public String call(Integer i) {
                        return "This is " + i;
                    }
                })
                .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        System.out.println(s);
                    }
                });
        System.out.println("----------------------------------------------------------------------------------------");
        Observable.just("999", "11") // 输入类型 String
                .map(new Func1<String, List<Integer>>() {
                    @Override
                    public List<Integer> call(String s) {
                        List<Integer> ints = new ArrayList<>();
                        ints.add(Integer.parseInt(s));
                        ints.add(Integer.parseInt(s));
                        ints.add(Integer.parseInt(s));
                        return ints;
                    }
                })
                .subscribe(new Action1<List<Integer>>() {
                    @Override
                    public void call(List<Integer> integers) {
                        int i = 0;
                        // 这里进行遍历
                        for (Integer integer : integers) {
                            log.error("Item " + i + " :" + +integer);
                            i += 1;
                        }
                    }
                });
        System.out.println("----------------------------------------------------------------------------------------");
        // 可以看到，将String格式的数据转换成了Integer格式的数据，或者是String格式的数据转换成List<Integer>格式的数据。map是一对一的变换。
    }
}

